To improve the power and the effectiveness of deforestation, several intermediate representations have been introduced, such as generic control operators and algebraic programming with fold, catamorphisms, and hylomorphisms. In the attribute grammar community there also exists a powerful and well-known deforestation-like transformation called descriptional composition[8].
This work [4] show that descriptional composition forms the core of a new and a more efficient functional programming deforestation method. For this purpose, a translation from functional programs into attribute grammars is introduced. Descriptional composition combined with a kind of symbolic evaluation defines a powerful tool called symbolic composition. This new transformation deforests some programs for which functional deforestations fail.
Finally, these results lead us to believe that attribute grammar notation is a simple and well-suited intermediate representation for data-structure-based transformations. (See also student suject)
Structure-directed genericity is popular in AGs because it's easy to write structure translations with AGs (and because most grammars are so complex that superficial polymorphism is insufficient).Trying to automate structure-directed genericity lead to our own work on automatic generation of coupling AGs [9, 13, 12, 14, 2] (See also student suject)